package com.xbongbong.paas.field;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.util.List;

/**
 * saas特有的属性pojo类
 * saas新字段中所有需要新增的属性全部放到该pojo中
 *
 * @author chaoxiong.lei
 * @Date 15:24 2019/1/30
 * @since v1.0
 **/
@Getter
@Setter
@ToString
public class SaasParticularAttributePoJo implements Serializable {
    private static final long serialVersionUID = -6824672925954351098L;

    /**
     * 联系人电话判重规则
     * 0.不判重
     * 1.全局判重
     * 2.单个客户内判重
     *
     * @see com.xbongbong.saas.enums.PhoneRepeatRuleEnum
     */
    private Integer phoneRepeatRule;

    /**
     * 关联业务单选/多选  false：单选；true：多选
     */
    private Boolean multiCheck;

    /**
     * 客户电话格式设置
     *
     * @see com.xbongbong.saas.enums.PhoneFormatSettingEnum
     */
    private Integer phoneFormatSetting;

    /**
     * 文本加勾选传参
     */
    private JSONObject textCheck;

    /**
     * 初始值
     */
    private Object initialValue;

    /**
     * 日期限制,和limitType一起用，当limitType为false时，dateLimit给当天零点；
     * 当limitType为true时，dateLimit给第二天零点
     */
    private Long dateLimit;

    /**
     * 限制类型 false: 限制左边不能编辑; true: 限制右边不能编辑
     */
    private Boolean limitType;
    /**
     * 生日关联字段
     */
    private JSONObject linkAttrs;
    /**
     * 规格库存
     */
    private JSONArray warehouseArray;
    /**
     * 关联产品解释集合
     */
    private List<FieldAttrEntityExt> productExplains;
    /**
     * 关联新建业务类型
     */
    private Integer linkBusinessType;
    /**
     * 关联选择模块(客户，合同等)
     */
    private String relyMode;
    /**
     * 关联选择类型(base:代表它是基础；relied:代表)
     */
    private String relyType;
    /**
     * 依赖数组（例：合同新建编辑时，报价单的父业务为机会和客户，机会的优先级大于客户）
     */
    private JSONArray relyArray;
    /**
     * 关联的父业务
     */
    private Integer relyBusiness;
    /**
     * 关联单选依赖的属性
     */
    private String relyAttr;
    /**
     * 关联子业务
     */
    private String relySubModel;
    /**
     * 合同的其它费用
     */
    private JSONArray surchargeList;
    /**
     * 产品字段依赖的属性
     */
    private String productRelyAttr;
    /**
     * idIn,数据集合
     */
    private List<Long> idIn;
    /**
     *  启用价目表 0:关闭 1：开启
     */
    private Integer isOpenPrice;

    /**
     * 时间段限制，true代表是时间段限制，false为非时间段限制
     */
    private Boolean periodLimitType;

    /**
     * 具体天数的限制
     */
    private Integer day;
}
